import numpy as np
import matplotlib.pyplot as plt

def weight(t):
    return 800 / (1 + 3 * np.exp(-t/30))  # 体重函数（磅）

days = np.arange(0, 50, 0.1)  # 更精细的天数范围（步长0.1天）
profits = []

for t in days:
    price = 65 - t          # 售价：65美分/磅，每天降1美分
    revenue = price * weight(t)  # 收入（美分）
    cost = 45 * t           # 总成本（美分）：每天45美分
    profit = revenue - cost
    profits.append(profit)

max_profit = max(profits)
best_day = days[np.argmax(profits)]  # 使用浮点天数精确查找

print(f"最佳出售时间：第{best_day:.1f}天，最大利润：{max_profit/100:.2f}美元")

# 绘制图表
plt.plot(days, profits)
plt.xlabel('Days (t)')
plt.ylabel('Profit (cents)')
plt.title('Profit vs. Selling Day')
plt.scatter(best_day, max_profit, color='red')
plt.grid(True)
plt.show()